'''
    实现一个自动取款机的存取款模拟效果。
    要求具有以下功能
    1.实现登录功能
    2.查询余额功能
    3.取钱功能
    4.存钱功能
    5.退出功能
'''
# 1.账号信息数据来源
account_list = [
    {'no':'1111111','name':'路人甲','balance':2000000,'password':'111'},
    {'no':'2222222','name':'炮灰乙','balance':300000,'password':'222'},
    {'no':'3333333','name':'流氓丙','balance':40000,'password':'333'},
    {'no':'4444444','name':'土匪丁','balance':5000,'password':'444'}
]

# 3.查看账号信息，查看余额
def show_account_info(num,password):
    account_info = ''
    for account in account_list:
        if account['no'] == num:
            account_info = account
            break
    if account_info != '' :
        if account_info['password'] == password:
            print('>' * 25, '欢迎登录XXXX系统', '<' * 25)
            print('尊敬的{0:}，欢迎您'.format(account_info['name']))
            print('您的账户【{0}】余额为：【{1}】'.format(account_info['no'], account_info['balance']))
        else:
            print('账号密码输入错误，请重新登录！')
    else:
        print('查无此账号信息，请重新登录！')
    return account_info


#4.取款功能
def draw_money(account,money):
    if not isinstance(money,(int,float)):
        raise TypeError('请输入有效的数字！')
    else:
        if int(account['balance']) >= money:
            print('>' * 25, '欢迎登录XXXX系统', '<' * 25)
            print('尊敬的{0:}，欢迎您'.format(account['name']))
            print('您的账户【{0}】取款后余额为：【{1}】'.format(account['no'], account['balance']-money))
        else:
            print('账户余额不足，请重新输入取款金额！')

#5.存钱功能
def save_money(account,money):
    if not isinstance(money,(int,float)):
        raise TypeError('请输入有效的数字！')
    else:
        print('>' * 25, '欢迎登录XXXX系统', '<' * 25)
        print('尊敬的{0:}，欢迎您'.format(account['name']))
        print('您的账户【{0}】存款后余额为：【{1}】'.format(account['no'], account['balance'] + money))

#6.退出系统
def loginOut():
    pass


# 6.界面和交互
while True:
    # 输出初始界面
    print('='*12,'XXX资金管理系统','='*12)
    print('{:1} {:13} {:15}'.format(' ', '1. 登录系统', '2. 退出系统'))
    key = input('请输入对应的选择')
    account = ''
    if key == '1':
        acc_no = input('请输入账号：')
        acc_password = input('请输入密码：')
        account = show_account_info(acc_no, acc_password)
        if account != '':
            print('{:1} {:13} {:15}'.format(' ', '3. 存款操作', '4. 取款操作'))
            print('=' * 40)
            key = input('请输入对应的选择')
            if key == '4':
                print('=' * 12, '取款操作', '=' * 12)
                money = float(input('请输入取款金额：'))
                draw_money(account, money)
                input('按回车继续：')
            elif key == '3':
                print('=' * 12, '存款操作', '=' * 12)
                money = float(input('请输入存款金额：'))
                save_money(account, money)
                input('按回车继续：')
        else:
            continue
    elif key == '2':
        loginOut()
        print('=' * 12, '再见', '=' * 12)
        break